package com.invengo.module_check.data.repsitory.business.source;


import com.invengo.library_db.entity.module_check.BookBean;
import com.invengo.library_db.entity.module_check.BookCarBean;
import com.invengo.library_db.entity.module_check.RecordBean;
import com.invengo.library_db.entity.module_check.ShelfBean;
import com.invengo.library_db.entity.module_check.StructBean;

import me.goldze.mvvmhabit.http.UpdateResult;

import java.util.List;

import io.reactivex.Observable;
import me.goldze.mvvmhabit.http.BaseBean;

//源文件接口
public interface BusinessSource {
    void removeByBooks(List<BookBean> bookBeans);

    Observable<BaseBean<BookBean>> getBookByTid(String tid);

    Observable<BaseBean<BookBean>> getBookByCode(String code);

    Observable<BaseBean<ShelfBean>> getShelfInfoByCode(String shelfCode);

    Observable<BaseBean<List<BookBean>>> getBookByShelfCode(String shelfCode);

    Observable<BaseBean<List<BookBean>>> getBookByMultiShelf(String startCode, String endCode,String BookCountlimit);

    Observable<BaseBean<ShelfBean>> getShelfInfoByTid(String tid);

    Observable<BaseBean<ShelfBean>> getNextOrUpperShelf(String shelfCode, boolean isNext);

    Observable<BaseBean<UpdateResult>> forceRevokeBook(List<BookBean> bookBeans);

    Observable<BaseBean<UpdateResult>> forcePositioning(List<BookBean> bookBeans, String shelfCode, String shelfName);

    Observable<BaseBean<UpdateResult>> bookListing(List<BookBean> bookBeans, String shelfCode, String ShelfName);

    Observable<BaseBean<UpdateResult>> inventoryBook(List<BookBean> bookBeans, String currentShelfCode, String currentShelfName, int errorCount, int inshelfCount, int borrowCount, int notOnCount);

    Observable<BaseBean<UpdateResult>> parallelLogs(List<BookBean> bookBeans, String currentShelfCode, String currentShelfName, int errorCount, int inshelfCount, int borrowCount, int notOnCount);

    Observable<BaseBean<UpdateResult>> downBook(List<BookBean> bookBeans);

    Observable<BaseBean<List<BookBean>>> getBookByKeyword(String keyword, Integer pageIndex, Integer pageSize);

    Observable<BaseBean<UpdateResult>> insertBookDeleteLogs(List<BookBean> bookBeans);

    Observable<BaseBean<UpdateResult>> removeOld(List<BookBean> bookBeans);

    Observable<BaseBean<List<ShelfBean>>> getShelfList(String shelfCode);

    Observable<BaseBean<UpdateResult>> updateFirstBook(List<ShelfBean> shelfBeans);


    Observable<BaseBean<UpdateResult>> createupdatetask(String startcode, String endcode);

    Observable<BaseBean<BookCarBean>> getBookCarInfo(String carId);

    Observable<BaseBean<UpdateResult>> bindBook2Car(List<BookBean> beans, String carId);

    Observable<BaseBean<UpdateResult>> upBook2ShelfFromCar(List<BookBean> beans, String carId);

    Observable<BaseBean<UpdateResult>> listingGuide(List<BookBean> beans);

    Observable<BaseBean<UpdateResult>> changeShelf(List<BookBean> bookBeans, String shelfCode, String shelfName);

    Observable<BaseBean<UpdateResult>> changeShelfLog(List<BookBean> bookBeans, String shelfCode);

    Observable<BaseBean<List<ShelfBean>>> getErrorShelf(String startcode, String endcode);

    Observable<BaseBean<RecordBean>> getUpdateRecordList(int finishstatus, int pageindex, int pagesize);

    List<StructBean> getStructData();
}
